#输入：nums = [2,7,11,15], target = 9 输出：[0,1] 解释：因为 nums[0] + nums[1] == 9 ，返回 [0, 1] 。 示例 2：
# 输入：nums = [3,2,4], target = 6 输出：[1,2] 示例 3：
# 输入：nums = [3,3], target = 6 输出：[0,1]
# 提示：
# 2 <= nums.length <= 104 -109 <= nums[i] <= 109 -109 <= target <= 109 只会存在一个有效答案
# 进阶：你可以想出一个时间复杂度小于 O(n2) 的算法吗？
def twoSum(nums, target):
    num_dict = {}
    for i, num in enumerate(nums):
        complement = target - num
        if complement in num_dict:
            return [num_dict[complement], i] #返回索引
        num_dict[num] = i
    return None

# 示例1
nums1 = [2, 7, 11, 15]
target1 = 18
result1 = twoSum(nums1, target1)
print(result1)  #

# 示例2
nums2 = [3, 2, 4]
target2 = 5
result2 = twoSum(nums2, target2)
print(result2)